package vista;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

import modelo.improvistos.*;
import modelo.tablero.Ciudad;


public class VistaMapa extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int separacion;
	private int fils, cols;
	private ImageIcon control= new ImageIcon(getClass().getResource("/imagenes/improvistos/controlPolicial.gif"));
	private ImageIcon piquete= new ImageIcon(getClass().getResource("/imagenes/improvistos/piquete.gif"));
	private ImageIcon pozo = new ImageIcon(getClass().getResource("/imagenes/improvistos/pozo.png"));
	private ImageIcon sorpresa= new ImageIcon(getClass().getResource("/imagenes/improvistos/sorpresa.gif"));
	private ImageIcon llegada= new ImageIcon(getClass().getResource("/imagenes/improvistos/llegada.png"));
	private Image img1;
	private Improvisto imp;
	private int filsImp;
	private Ciudad mapa;
	private int areaMap = 660;
	
	public VistaMapa(Ciudad map){
		mapa = map;
		
		fils = map.getFilas();
		cols = map.getCols();
		separacion = areaMap/(2*fils+1); //reango de mapa 0-15
		System.out.println(separacion);
		//this.setSize(fils*separacion+separacion/2, cols*separacion+separacion/2);
		this.setBounds(0, 0, 695, 695);
		//setBorder(new LineBorder((Color.red),5));
		this.setBackground(Color.BLACK);
		filsImp = 2*fils -1;
	}
	
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
		
		for(int i = 0; i <=fils ; i++){
			for(int j = 0; j <=cols ; j++){
				g.setColor(randomColor());
				g.fill3DRect(2*separacion*j, 2*separacion*i, separacion, separacion,true);
			}
		}
		for(int i =0; i < filsImp ; i++){
			for(int j=0; j < cols; j++){
				int val = 1;
				imp =  mapa.getImprovisto(i,j);
				if(imp.getClass() == Piquete.class)
					img1 = piquete.getImage();
				else if (imp.getClass() == Policia.class)
					img1 = control.getImage();
				else if (imp.getClass() == Pozo.class)
					img1 = pozo.getImage();
				else if (imp.getClass() == Transformacion.class)
					img1 = sorpresa.getImage();
				else if (imp.getClass() == Favorable.class)
					img1 = sorpresa.getImage();
				else if (imp.getClass() == Desfavorable.class)
					img1 = sorpresa.getImage();
				else
					val = -1;
				if (val == 1){
					if( i % 2 == 0 && j<cols-1)
						g.drawImage(img1,(2*j+2)*separacion, (i+1)*separacion, separacion-(separacion/10), separacion-(separacion/10), this);
					else if ( i % 2 != 0)
						g.drawImage(img1,(2*j+1)*separacion, (i+1)*separacion,separacion-(separacion/10), separacion-(separacion/10), this);
					}
				}	
			}
		//if(mapa.getFilMeta() != -1){
			img1 = llegada.getImage();
			g.drawImage(img1,(2*mapa.getCols())*separacion, (mapa.getFilMeta()+1)*separacion, separacion-(separacion/10), separacion-(separacion/10), this);
		//}
	}
	
	private Color randomColor(){
		int r = (int)(Math.random()*256);
		int g = (int)(Math.random()*256);
		int b = (int)(Math.random()*256);
		return (new Color(r, g, b));
	}
	
	public int getDimCuadra(){
		return separacion;
	}

}
